package server;

public class ColaCircular {
	private Msj[] mensajes;
	private int acumMsjNumber;
	private int lastMsj;
	
	public Msj[] getMensajes() {
		return mensajes;
	}

	public int getAcumMsjNumber() {
		return acumMsjNumber;
	}

	public int getLastMsjIndex() {
		return lastMsj;
	}
	
	public int getFirstMsjIndex() {
		return (acumMsjNumber>mensajes.length)?getLastMsjIndex()+1:0;
	}


	
	public ColaCircular (int size)
	{
		mensajes=new Msj[size];
		
		lastMsj=-1;
		
		acumMsjNumber=0;
	}

	public void addMsj(String msj)
	{
		
		
		acumMsjNumber++;
		
		if (lastMsj==mensajes.length-1)
		{
			lastMsj=0;
		}
		else
		{
			lastMsj++;
		}
		

		mensajes[lastMsj]=new Msj(acumMsjNumber, msj);
	}
	
	public String getMsjs(int lasMsj)
	{
	
		String msjsString="";
		
		if (getAcumMsjNumber()<=mensajes.length)
		{
			for (int i=getFirstMsjIndex();i<=getLastMsjIndex();i++)
			{
				if(mensajes[i].getMsjNumber()>lasMsj)
				{
					msjsString+=" "+mensajes[i].getMsj();
				}
			}
		}
		else
		{
			for (int i=getFirstMsjIndex();i<=mensajes.length-1;i++)
			{
				if(mensajes[i].getMsjNumber()>lasMsj)
				{
					msjsString+=" "+mensajes[i].getMsj();
				}
			}
			for (int j=0;j<=getLastMsjIndex();j++)
			{
				if(mensajes[j].getMsjNumber()>lasMsj)
				{
					msjsString+=" "+mensajes[j].getMsj();
				}
			}
			
		}
		
		return msjsString;
		
	}

	
	class Msj{
		
		@Override
		public String toString() {
			return "Msj [msjNumber=" + msjNumber + ", msj=" + msj + "]";
		}
		public Msj(int msjNumber, String msj) {
			super();
			this.msjNumber = msjNumber;
			this.msj = msj;
		}
		
		private int msjNumber;
		private String msj;
		
		public int getMsjNumber() {
			return msjNumber;
		}
		public void setMsjNumber(int msjNumber) {
			this.msjNumber = msjNumber;
		}
		public String getMsj() {
			return msj;
		}
		public void setMsj(String msj) {
			this.msj = msj;
		}
		
		
	}

}
